<html xmlns="http://www.w3.org/1999/xhtml"  
      xmlns:h="http://java.sun.com/jsf/html"  
      xmlns:f="http://java.sun.com/jsf/core"  
      xmlns:p="http://primefaces.org/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets"> 

    <ui:composition template="../index.xhtml">
        <ui:define name="conteudo">
            <h:form id="tituloPagina">
                <h:outputText value="Cadastro de funcionários"/>
            </h:form>
            <p:tabView id="tabView">  
                <p:tab id="tab1" title="Funcionários">  
                    <h:form id="formPesquisa" >
                        <p:growl/>
                        <p:dataTable id="listFuncionarios" var="forn" value="#{funcionarioControler.listFuncionario}" widgetVar="carsTableAtivos" 
                                     rowKey="#{forn.id}" selectionMode="single"  emptyMessage="Nenhum registro foi encontrado!" paginator="true" rows="10" rowsPerPageTemplate="5,10,15,#{funcionarioControler.listFuncionario.size()}">
                            <f:facet name="header" >  
                                <p:outputPanel>  
                                    <h:outputText value="Digite para pesquisar: " />
                                    <p:inputText id="globalFilter" onkeyup="carsTableAtivos.filter()" style="width:150px" /> 
                                    <p:commandButton value="Novo" accesskey="N" onclick="dlgFuncionario.show()" action="#{funcionarioControler.inicializaObj()}" update=":formAdd"/>
                                </p:outputPanel>  
                            </f:facet>  
                            <p:column headerText="Ações" footerText="Ações" filterMatchMode="Ações" style="width: 60px;">  
                                <p:commandButton action="#{funcionarioControler.setFuncionario(forn)}" onclick="dlgFuncionario.show();" update=":formAdd"
                                                 image="ui-icon ui-icon-pencil" title="alterar" />
                                <p:commandButton image="ui-icon ui-icon-close" title="excluir" 
                                                 actionListener="#{funcionarioControler.setFuncionario(forn)}" onclick="confirmationExcluirFuncionario.show();"/>
                            </p:column>
                            <p:column filterBy="${forn.nome}" headerText="Nome" footerText="Nome" sortBy="#${forn.nome}">    
                                <h:outputText value="${forn.nome}" />  
                            </p:column> 
                            <p:column filterBy="${forn.telefone1}" headerText="Telefone" footerText="Telefone" sortBy="#${forn.telefone1}">    
                                <h:outputText value="${forn.telefone1}" title="#{forn.telefone2} - #{forn.celular}" />  
                            </p:column> 
                            <p:column filterBy="${forn.cpf}" headerText="CPF" footerText="CPF" sortBy="${forn.cpf}">  
                                <h:outputText value="${forn.cpf}"/>
                            </p:column>  
                        </p:dataTable>
                        <!-- confirmações  de exclusão-->
                        <p:confirmDialog id="confirmDialog" message="Confirma excluir o funcionário?" appendToBody="true"
                                         header="Atenção!!!" severity="alert" widgetVar="confirmationExcluirFuncionario" >  
                            <p:commandButton id="confirm" value="Sim" oncomplete="confirmationExcluirFuncionario.hide()"  
                                             actionListener="#{funcionarioControler.excluir()}" update="@form"/>  
                            <p:commandButton id="decline" value="Cancelar" onclick="confirmationExcluirFuncionario.hide()" type="button" />   
                        </p:confirmDialog>
                    </h:form>
                </p:tab>
                <p:tab title="Acesso ao sistema">
                    <ui:include src="acesso.xhtml"/>
                </p:tab>
            </p:tabView>
            <p:dialog id="dialogFunc" header="Novo funcionário" widgetVar="dlgFuncionario" modal="true" resizable="false" appendToBody="true">  
                <h:form id="formAdd">
                    <p:messages/>
                    <h:inputHidden value="#{funcionarioControler.funcionario.id}"/>
                    <h:panelGrid columns="4">

                        <h:panelGrid columns="1">
                            <h:outputText value="Código"/>
                            <p:inputText value="#{funcionarioControler.funcionario.id}" disabled="true" />
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Nome"/>
                            <p:inputText value="#{funcionarioControler.funcionario.nome}" required="true" requiredMessage="Informe o nome do funcionário!!" >
                                <p:focus/>
                            </p:inputText>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Cpf:"/>
                            <p:inputMask mask="999.999.999-99" value="#{funcionarioControler.funcionario.cpf}"/>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Rg:"/>
                            <p:inputText value="#{funcionarioControler.funcionario.rg}"/>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Email:"/>
                            <p:inputText value="#{funcionarioControler.funcionario.email}"/>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Telefone1:"/>
                            <p:inputMask mask="(99)9999-9999" value="#{funcionarioControler.funcionario.telefone1}"/>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Telefone2:"/>
                            <p:inputMask mask="(99)9999-9999" value="#{funcionarioControler.funcionario.telefone2}"/>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Celular:"/>
                            <p:inputMask mask="(99)9999-9999" value="#{funcionarioControler.funcionario.celular}"/>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Data de Nascimento:"/>
                            <p:calendar value="#{funcionarioControler.funcionario.dataNascimento}" showOn="button">
                                <f:convertDateTime pattern="dd/MM/yyyy"/>
                            </p:calendar>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Data de Admissão:"/>
                            <p:calendar value="#{funcionarioControler.funcionario.dataAdmissao}" showOn="button">
                                <f:convertDateTime pattern="dd/MM/yyyy"/> 
                            </p:calendar>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Data de Demissão:"/>
                            <p:calendar value="#{funcionarioControler.funcionario.dataDemissao}" showOn="button">
                                <f:convertDateTime pattern="dd/MM/yyyy"/> 
                            </p:calendar>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Cep:"/>
                            <p:inputMask mask="99999-999" value="#{funcionarioControler.funcionario.cep}"/>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Logradouro:"/>
                            <p:inputText value="#{funcionarioControler.funcionario.logradouro}" />
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Número:"/>
                            <p:inputText value="#{funcionarioControler.funcionario.numero}" />
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Bairro:"/>
                            <p:inputText value="#{funcionarioControler.funcionario.bairro}" />
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Estado: "/>
                            <p:selectOneMenu value="#{funcionarioControler.funcionario.cidade.estado}" style="width: 150px;">
                                <f:selectItems value="#{funcionarioControler.retornaEstados()}" var="estado" itemValue="#{estado}" itemLabel="#{estado}"/> 
                                <p:ajax event="change" update="cidade" listener="#{funcionarioControler.carregaCidades()}"/>
                            </p:selectOneMenu>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Cidade: "/>
                            <p:selectOneMenu value="#{funcionarioControler.funcionario.cidade.id}" id="cidade" style="width: 150px;">
                                <f:selectItem itemValue="0" itemLabel="Selecione"/>
                                <f:selectItems value="#{funcionarioControler.listCidades}" var="cid" itemValue="#{cid.id}" itemLabel="#{cid.cidade}"/> 
                            </p:selectOneMenu>
                        </h:panelGrid>
                    </h:panelGrid>
                    <h:panelGrid columns="3">
                        <p:commandButton value="Salvar" accesskey="S" action="#{funcionarioControler.salvar()}" update="@form :tabView" onclick="statusDialog.show();" onsuccess="statusDialog.hide();"/>
                        <p:commandButton value="Novo" accesskey="N" update="@form" action="#{funcionarioControler.inicializaObj()}" process="@this"/>
                        <p:commandButton value="Cancelar" accesskey="C" onclick="dlgFuncionario.hide()" process="@this"/>
                    </h:panelGrid>
                </h:form>
            </p:dialog>

            <p:dialog id="dialogAcessoFunc" header="Novo operador de sistema" widgetVar="dlgAcessoFuncionario" modal="true" resizable="false" appendToBody="true">  
                <h:form id="formAddAcessoFun">
                    <p:messages/>
                    <h:inputHidden value="#{operadorControler.operador.id}"/>

                    <h:panelGrid columns="2">
                        <h:panelGrid columns="1">
                            <h:outputText value="Código"/>
                            <p:inputText value="#{operadorControler.operador.id}" disabled="true" />
                        </h:panelGrid>

                        <h:panelGrid columns="1" rendered="#{!operadorControler.alterando}">
                            <h:outputText value="Funcionário:" />
                            <p:selectOneMenu value="#{operadorControler.operador.idEcfFuncionario.id}" style="width: 150px;">
                                <f:selectItem itemValue="0" itemLabel="Selecione" />
                                <f:selectItems value="#{funcionarioControler.retornaFuncionarioSemLogin}" var="uni" itemValue="#{uni.id}" itemLabel="#{uni.nome}"/> 
                            </p:selectOneMenu>
                        </h:panelGrid>

                        <h:panelGrid columns="1" rendered="#{operadorControler.alterando}">
                            <h:outputText value="Funcionário:" />
                            <p:selectOneMenu style="width: 150px;" value="#{operadorControler.operador.idEcfFuncionario.id}" disabled="#{operadorControler.alterando}">
                                <f:selectItem itemValue="0" itemLabel="Selecione" />
                                <f:selectItems value="#{funcionarioControler.listFuncionario}" var="uni" itemValue="#{uni.id}" itemLabel="#{uni.nome}"/> 
                            </p:selectOneMenu>
                        </h:panelGrid>

                        <h:panelGrid columns="1" rendered="#{!operadorControler.alterando}">
                            <h:outputText value="Nome"/>
                            <p:inputText value="#{operadorControler.operador.login}" required="true" requiredMessage="Informe o nome de login!!">
                                <p:focus/>
                            </p:inputText>
                        </h:panelGrid>

                        <h:panelGrid columns="1" rendered="#{!operadorControler.alterando}">
                            <h:outputText value="Senha:" />
                            <p:password  value="#{operadorControler.operador.senha}" />
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Nível de acesso:"/>
                            <p:selectOneMenu value="#{operadorControler.operador.idEcfFuncionario.nivelAutorizacao}" style="width: 150px;">
                                <f:selectItem itemValue="0" itemLabel="Selecione" />
                                <f:selectItem itemValue="O" itemLabel="Operador" />
                                <f:selectItem itemValue="S" itemLabel="Supervisor" />
                                <f:selectItem itemValue="G" itemLabel="Gerente" />
                            </p:selectOneMenu>
                        </h:panelGrid>

                    </h:panelGrid>
                    <h:panelGrid columns="3">
                        <p:commandButton value="Salvar" accesskey="S" action="#{operadorControler.salvar()}" update="@form :tabView" onclick="statusDialog.show();" onsuccess="statusDialog.hide();"/>
                        <p:commandButton value="Novo" accesskey="N" update="@form" action="#{operadorControler.inicializaObj()}" process="@this"/>
                        <p:commandButton value="Cancelar" accesskey="C" onclick="dlgAcessoFuncionario.hide()" process="@this"/>
                    </h:panelGrid>
                </h:form>
            </p:dialog>
        </ui:define>
    </ui:composition>
</html>